package io.zim.modules.ws.entity;
import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;

/**
 * 认证实体
 * @author
 * @since
 */
@Data
public class IdentityEntity implements Serializable {
  private static final long serialVersionUID = 1L;

  /**
   * 应用key
   * */
  @NotNull(message = "appKey不能为null")
  private String appKey;

  /**
   * 随机数，无长度限制
   * */
  @NotNull(message = "nonce不能为null")
  private String nonce;

  /**
   * 时间戳，从1970年1月1日0点0分0秒开始到现在的毫秒数
   * */
  @NotNull(message = "signTimestamp不能为null")
  private String signTimestamp;

  /**
   * 数据签名Signature (数据签名)计算方法：
   * 将系统分配的 App Secret、Nonce (随机数)、signTimestamp (时间戳)三个字符串按先后顺序拼接成一个字符串并进行 SHA1 哈希计算。
   * 例 sha1(appSecret+nonce+signTimestamp);
   * */
  @NotNull(message = "signature不能为null")
  private String signature;

  /**
   * 用户id
   * */
  @NotNull(message = "userId不能为null")
  private String userId;

  /**
   * 组ids，组id以逗号分隔
   * */
  private String groups;

  /**
   * 是否重连
   * */
  private String reconnect;

  /**
   * 发送消息的主体身份 user、service、system
   * */
  @NotNull(message = "identity不能为null")
  @Pattern(regexp = "user|service|system", message = "identity参数错误")
  private String identity;
}
